A cache is a collection of data duplicating original values stored elsewhere, where the original data is expensive to fetch (e.g., owing to longer access time) compared to the cost of reading the cache. In many instances, a cache is a temporary storage area where frequently accessed data can be stored for rapid access. Once the data is stored in the cache, future use can be made by accessing the cached copy rather than the original data, so that the average retrieval cost is less expensive.
Despite the benefits of a cache, some distributed data processing systems do not employ a cache for user-modifiable data. In the context of the technology described herein, user-modifiable data is any data keyed off an identification of a customer or session that a customer is allowed to modify solely through the use of the distributed data processing system. Examples of user-modifiable data include user profile information on an identity server or other corporate software system, shopping cart contents on a website, personal customer information on any of various types of web-based and non-web based software systems, etc.
Although the user-modifiable data described above has a low rate of change, it is often not cached because the data processing systems have a distributed front-end that makes it difficult to maintain consistency between multiple caches and the back-end repository of data. If the user changes the user-modifiable data with one of the front-end servers in a system that has multiple front-end servers that share the load of requests and cache the user-modifiable data, the data in the cache of the other front end servers will become stale. Consider the case where a customer adds an item to their shopping cart. The updated shopping cart contents must be immediately available on the web site or it would appear that the item was not actually added to the shopping cart. From the point of view of the customer, a stale cache hit is unacceptable.